复数

  标准库支持一族复数类型,采用的也是类似于在2.5.2节所描述 complex 类的方式。为了支持其标量可以是单精度浮点数(float),双精度数(double)等的复数,标准库提供的 complex 是一个模版:

    template<class scalar> class complex
    {
    public:
        complex(scalar re, scalar im);
        // ...
    };

它支持复数类型的常规算术运算和最常用的数学函数。例如,

    // 取自<complex>的标准指数函数:
    template<class C> complex<C> pow(const complex<C>&, int);

    void f(complex<float> fl, complex<double> db)
    {
        complex<long double> ld = fl + sqrt(db);
        db += fl * 3;
        fl = pow(1/fl, 2);
        // ...
    }

更多细节参见22.5节。

🔚